<?php
class WoonplaatsController extends PageController{
	public function actionIndex(){

	}
	public function actionParser(){
		$uri = "B:\\xampplite\\private\\application_red\\almanak.html";

		$dom = new DOMDocument();
		$dom->loadHTMLFile($uri);

		$tables = $dom->documentElement->getElementsByTagName("table");

		function parseNaam($node){
			if(null == $node) return "NullNode";

			$isA = $node->getElementsByTagName("a");
			if($isA->length == 1){
				// has a url
				return $isA->item(0)->nodeValue;
			}else{
				// does not have a url
				return $node->nodeValue;
			}
		}

		function recursePrint($node, $depth = 0){
			$pad = str_pad("", $depth, " ", STR_PAD_LEFT);
			echo "{$pad}{$node->nodeName};{$node->nodeValue}\n<br />";

			try{
				if($node->childNodes->length > 0){
					foreach($childNodes as $snode){
						recursePrint($snode, $depth+1);
					}
				}
			}catch(Exception $e){}
		}
		$list = array();
		try{
			foreach($tables as $table){
				$rows = $table->getElementsByTagName("tr");
				$skipFirst = true;

				foreach($rows as $row){
					if($skipFirst || $row->childNodes->length < 2) {$skipFirst = false; continue;}

					$tds = $row->getElementsByTagName("td");

					$plaatsnaam = parseNaam($tds->item(1));
					$provinnaam = parseNaam($tds->item(4));

					if(!isset($list[$provinnaam])) $list[$provinnaam] = array();

					$list[$provinnaam][] = $plaatsnaam;
				}
			}
		}catch(Exception $e){
			var_dump($e);
		}


		$uri = "B:\\xampplite\\private\\application_red\\plaatsnamen.ser";
		file_put_contents($uri, serialize($list));
	}

	public function actionSaver(){
		$uri = "B:\\xampplite\\private\\application_red\\plaatsnamen.ser";
		$list = unserialize(file_get_contents($uri));

		$mP = new Mapper_Provincie();
		$mW = new Mapper_Woonplaats();

		foreach($list as $provincie_key => $plaatsen){
			try{
				$provincie = new Provincie();
				$provincie->provincie_naam = strtolower($provincie_key);

				$mP->insert($provincie);
			}catch(Exception $e){}

			$provincie = $mP->getByname(strtolower($provincie_key));

			foreach($plaatsen as $plaats){
				set_time_limit(1);
				try{
					$woonplaats = new Woonplaats();
					$woonplaats->woonplaats_naam = strtolower($plaats);
					$woonplaats->provincie_id = $provincie->provincie_id;

					$mW->insert($woonplaats);
				}catch(Exception $e){}

			}
		}
	}

	public function actionListbyprovincie(){
		if($this->request->isGet()){
			$mP = new Mapper_Provincie();
			$mW = new Mapper_Woonplaats();

			$this->setPureJSON();

			if(($provincie = $mP->get($this->request->getParam("provincie_id"))) instanceof Provincie){
				$this->woonplaatsen = $mW->getByProvincie($provincie);

				$this->success = true;
			}
		}
	}
}